#ifndef MATRIX_H__
#define MATRIX_H__

#include <stdio.h>

#define GENERATE \
	X(int, p, puts ("\n");)\
	X(int, , )\
	X(double, p, puts ("\n");)\
	X(double, , )\
	X(float, p, puts ("\n");)\
	X(float, , )

#define X(type, mode, d) void apply##type##mode (type **, const unsigned int, const unsigned int, void ()); 
    
GENERATE
#undef X

void **allocate (const unsigned int, const unsigned int, const unsigned int);
void deallocate (void **, const unsigned int);

#endif 
